--- xemacs-21.4.15/src/event-Xt.c.orig	2004-07-09 11:02:02.000000000 -0400
+++ xemacs-21.4.15/src/event-Xt.c	2004-07-09 11:02:23.000000000 -0400
@@ -1253,7 +1253,26 @@
 		KeySym bot = XLookupKeysym (ev, Mode_switch_p ? 2 : 0);
 		KeySym top = XLookupKeysym (ev, Mode_switch_p ? 3 : 1);
 		if (top && bot && top != bot)
-		  modifiers &= ~XEMACS_MOD_SHIFT;
+			// SAM
+			switch(top) {
+			case 0x1008fe01:
+			case 0x1008fe02:
+			case 0x1008fe03:
+			case 0x1008fe04:
+			case 0x1008fe05:
+			case 0x1008fe06:
+			case 0x1008fe07:
+			case 0x1008fe08:
+			case 0x1008fe09:
+			case 0x1008fe0a:
+			case 0x1008fe0b:
+			case 0x1008fe0c:
+				break;
+			default:
+				modifiers &= ~XEMACS_MOD_SHIFT;
+				break;
+			}
+		    //SAM
 	      }
 	    emacs_event->event_type	     = key_press_event;
 	    emacs_event->timestamp	     = ev->time;
